package io;

import java.io.*;
import java.util.Scanner;

public class IODemo9 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要查找的根目录");
        File rootDir = new File(sc.next());
        if (!rootDir.isDirectory()) {
            //不是目录
            System.out.println("输入有误，你输入的目录不存在！");
            return;
        }
        System.out.println("请输入你要查找的字符");
        String word = sc.next();

        //递归进行目录/文件的遍历
        scanDir(rootDir,word);
    }

    private static void scanDir(File rootDir, String word) {
         File[] files = rootDir.listFiles();
         if (files == null) {
             //如果是空目录就不用遍历了，直接返回
             return ;
         }
         //遍历files里的每个文件
        for (File f : files) {
            System.out.println("当前扫描文件：" + f.getAbsolutePath());
            if (f.isFile()) {
                //如果是普通文件，读取文件
                String content = readFile(f);
                if (content.contains(word)) {
                    System.out.println(f.getAbsolutePath() + " 包含该字符");
                }
            } else if (f.isDirectory()) {
                //如果是目录，遍历里面文件
                scanDir(f,word);
            } else {
                // 不是普通文件也不是目录文件，直接跳过
                return ;
            }
        }
    }

    private static String readFile(File f) {
        StringBuffer stringBuffer = new StringBuffer();
        try (Reader reader = new FileReader(f)) {
            while (true) {
                int c = reader.read();
                if (c == -1) {
                    break;
                }
                stringBuffer.append((char)c);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuffer.toString();
    }


}
